package com.pdfbox.sample.quickstart;

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.font.Standard14Fonts;

public class _7AddText {

  public static void main (String args[]) throws IOException {
    String existFileName = "E:/PdfBox_Examples/add_page.pdf";
    String exportFileName = "E:/PdfBox_Examples/周报_add_text.pdf";

    // 这种方式如果文本过长时，也只会显示单行的数据

    // 第1步:加载现有文档
    File file = new File(existFileName);
//    PDDocument document = PDDocument.load(file);
    PDDocument document = Loader.loadPDF(file);


    // 第2步:获取所需页面, 从索引 0 开始
    // 添加一个空白的页面模拟
    PDPage my_page = new PDPage();
    document.addPage(my_page);
    PDPage page = document.getPage(1);

    // 第3步:准备内容流
    PDPageContentStream contentStream = new PDPageContentStream(document, page);

    // 第4步:开始文本
    contentStream.beginText();

    // 第5步:设置字体
    PDType1Font font = new PDType1Font(Standard14Fonts.FontName.TIMES_ROMAN);
    contentStream.setFont(font, 12);

    // 第6步:设置文本的位置
    contentStream.newLineAtOffset(25, 500);

    // 第7步:插入文本
    String text = "This is the sample document and we are adding content to it.";
    contentStream.showText(text);

    // 第8步:结束文本
    contentStream.endText();
    System.out.println("Content added");

    // 第9步:关闭 PDPageContentStream
    contentStream.close();

    // 第10步:保存文档
    document.save(new File(exportFileName));

    // 第11步:关闭文档
    document.close();

    System.out.println("export " + exportFileName + " success");
  }

}
